/* * Created by Andrey Cherkashin (acherkashin) * http://acherkashin.me * * License * Copyright (c) 2015 Andrey Cherkashin * The project released under the MIT license: http://opensource.org/licenses/MIT */ package ragefist.extension.mysql; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; import org.luaj.vm2.LuaTable; import org.luaj.vm2.LuaValue; /** * * @author acherkashin */ public class ResultSetConverter { public static LuaTable convertToLuaTable(ResultSet rs) throws SQLException { LuaTable table = LuaTable.tableOf(); ResultSetMetaData rsmd = rs.getMetaData(); int row = 1; while(rs.next()) { int numColumns = rsmd.getColumnCount(); LuaTable item = LuaTable.tableOf(); for (int i=1; i<numColumns+1; i++) { String columnName = rsmd.getColumnName(i); if(rsmd.getColumnType(i) == java.sql.Types.ARRAY){ Logger.getLogger(ResultSetConverter.class.getName()).log(Level.SEVERE, "Array Type is not supported"); } else if(rsmd.getColumnType(i)==java.sql.Types.BIGINT){ item.set(columnName, LuaValue.valueOf(rs.getInt(columnName))); } else if(rsmd.getColumnType(i)==java.sql.Types.BOOLEAN){ item.set(columnName, LuaValue.valueOf(rs.getBoolean(columnName))); } else if(rsmd.getColumnType(i)==java.sql.Types.BLOB){ Logger.getLogger(ResultSetConverter.class.getName()).log(Level.SEVERE, "Blob Type is not supported"); } else if(rsmd.getColumnType(i)==java.sql.Types.DOUBLE){ item.set(columnName, LuaValue.valueOf(rs.getDouble(columnName))); } else if(rsmd.getColumnType(i)==java.sql.Types.FLOAT){ item.set(columnName, LuaValue.valueOf(rs.getFloat(columnName))); } else if(rsmd.getColumnType(i)==java.sql.Types.INTEGER){ item.set(columnName, LuaValue.valueOf(rs.getInt(columnName))); } else if(rsmd.getColumnType(i)==java.sql.Types.NVARCHAR){ item.set(columnName, LuaValue.valueOf(rs.getNString(columnName))); } else if(rsmd.getColumnType(i)==java.sql.Types.VARCHAR){ item.set(columnName, LuaValue.valueOf(rs.getString(columnName))); } else if(rsmd.getColumnType(i)==java.sql.Types.TINYINT){ item.set(columnName, LuaValue.valueOf(rs.getInt(columnName))); } else if(rsmd.getColumnType(i)==java.sql.Types.SMALLINT){ item.set(columnName, LuaValue.valueOf(rs.getInt(columnName))); } else if(rsmd.getColumnType(i)==java.sql.Types.DATE){ item.set(columnName, LuaValue.valueOf(rs.getDate(columnName).toString())); } else if(rsmd.getColumnType(i)==java.sql.Types.TIMESTAMP){ item.set(columnName, LuaValue.valueOf(rs.getTimestamp(columnName).toString())); } else { Logger.getLogger(ResultSetConverter.class.getName()).log(Level.SEVERE, "Unsupported type"); } } table.set(row, item); } return table; } }